package com.zwps.biz.dal.db.dao;

import com.baomidou.dynamic.datasource.annotation.DS;
import com.zwps.biz.api.model.vo.elements.*;
import org.apache.ibatis.annotations.MapKey;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.math.BigDecimal;
import java.util.Collections;
import java.util.List;
import java.util.Map;

@DS("one")
public interface ElementsDAO {

    List<ElementsDownstreamVO> getElementsDownstream();

    List<ElementsReservoirAreaVO> getElementsReservoirArea();
    List<ElementsReservoirAreaVO> getElementsReservoirAreaList(@Param("names") List<String> names,@Param("tableName") String tableName);

    List<RelicPatternSpotVO> getRelicPatternSpot();

    List<SectionDownstreamVO> getSectionDownstream();

    List<ReservoirInundationVO> selectReservoirInundationByWaterlevel(BigDecimal waterlevel);




    List<ReservoirInundationVO> batchSelectReservoirInundation();

    List<ReservoirInundationVO> selectReservoirInundation();

    List<ReservoirInundationVO> selectVillageTotalAreaList(@Param("type") Integer type, @Param("waterlevel") BigDecimal waterlevel);

    List<RelicPatternSpotVO> getRelicPatternSpotByType(@Param("type") String type);

    List<BigDecimal> getWaterlevel();

    List<ReservoirInundationVO> selectReservoirSubmergenceByYear(@Param("year") Integer year,@Param("level") BigDecimal level, @Param("status") Integer status);
    List<ReservoirInundationVO> selectReservoirSubmergenceByYearNew(@Param("year") Integer year,@Param("level") BigDecimal level, @Param("status") Integer status);
    List<ReservoirInundationVO> selectInundationByWaterlevel(BigDecimal waterlevel);

    ReservoirSubmergenceStatsVO selectReservoirSubmergence(@Param("year") Integer year,@Param("level") BigDecimal level, @Param("status") Integer status);
    ReservoirSubmergenceStatsVO selectInundation(BigDecimal waterlevel);

    List<String> getTownList(@Param("year") Integer year,@Param("level") BigDecimal level, @Param("status") Integer status);
    List<String> getTownLists(BigDecimal waterlevel);

    List<ReservoirInundationCountVO> count(BigDecimal waterlevel);

    Integer counts(@Param("year") Integer year,@Param("level") BigDecimal level, @Param("status") Integer status, @Param("type") int type);

    List<RelicPatternSpotVO> getElementsPatternSpotList(List<String> names);

    List<VillageVO> getVillage(List<String> names);

   List<DeviceInfoVO>  selectDeviceInfo();


    List<EmergencyVO> selectEmergencyContact();
    List<EmergencyDataVO> getUserPhone(String village);

    List<SectionDownstreamVO> selectElementsDownstream();

    List<SectionDownstreamVO> selectRelicPatternSpot();

    List<SectionDownstreamVO> selectVillageDate();

    List<ZSmallRsvrPositionVO> selectZSmallRsvrPositionDate();

    List<VillageVO> getVillageList();

    List<ElementsReservoirAreaVO> getElementsReservoirList();

    List<ElementsReservoirAreaVO> getElementsList();

    List<RelicPatternSpotVO> getElementList();

    List<EmergencyContactVO> selectEmergencyContactList();
}
